A general introduction to data and computer network security is provided below. For more information on this topic, the reader is invited to consult the publications "Data and computer communications", 4.sup.th edition, New York, N.Y.: Macmillan Publishing, 1994 and "Operating Systems", 2.sup.nd edition, Englewood Cliffs, N.J.: Prentice Hall, 1995, both by William Stallings. The content of these publications is incorporated herein by reference.
The following paragraphs give definitions of terms used throughout this document.
HyperText Transfer Protocol (HTTP) (from RFC 2068): It is an application-level protocol for distributed, collaborative, hypermedia information systems. It is a generic, stateless, object-oriented protocol which can be used for many tasks, such as name servers and distributed object management systems, through extension of its request methods. A feature of HTTP is the typing and negotiation of data representation, allowing systems to be built independently of the data being transferred.
302 redirect (from RFC 2068): It is an HTTP status code. It signifies that the requested resource resides temporarily under a different Universal Resource Identifier (URI).
401 authenticate challenge (from RFC 2068): It is an HTTP status code. It signifies that the request requires user authentication. The response to the request must include a World Wide Web-Authentication header field containing a challenge applicable to the requested resource.
Hypertext Markup Language (HTML): It is a markup language for hypertext that is used with World Wide Web client browsers. Examples of uses of HTML are: publishing online documents with headings, text, tables, lists, photos, etc., retrieving online information via hypertext links, designing forms for conducting transactions with remote services (for use in searching for information, making reservations, ordering products, etc.), and including spreadsheets, video clips, sound clips, and other applications directly in documents.
Transmission Control Protocol (TCP): It is a library of routines that applications can use when they need reliable network communications with another computer. TCP is responsible for verifying the correct delivery of data from client to server. It adds support to detect errors or lost data and to trigger reconstruction until the data is correctly and completely received.
Internet Protocol (IP): A library of routines that TCP calls on, but which is also available to application that do not use TCP. IP is responsible for transporting packets of data from node to node. It forwards each packet based on a four-byte destination address (the IP number).
Socket: Name given to the package of subroutines that provide access to TCP/IP on most systems.
Cookie: It is a tool used to maintain state variables concerning the World Wide Web. A cookie can take the form of an HTTP header that consists of a string of information about the visit that is entered into the memory of the browser. This string may contain the domain, path, lifetime, and value of a variable, among other type of information.
Uuencode: It is a Unix operating system program for encoding binary data in the American Standard Code for information Interchange (ASCII) format.
Uniform Resource Locator (URL): It is a standard that was developed to specify the location of a resource available electronically. Examples of protocols that use URLs are HTTP, File Transfer Protocol (FTP), Gopher, Telnet sessions to remote hosts on the Internet, and Internet e-mail addresses. The Uniform Resource Locator describes the location and access method of a resource on the Internet, for example, the URL http://www.nortel.com describes the type of access method being used (http) and the server location which hosts the Web site (www. nortel.com)
Common Gateway Interface (CGI): It is a standard for interfacing external applications with information servers, such as HTTP or Web servers. A plain HTML document that the Web daemon (see definition below) retrieves is static, which means it exists in a constant state. An example of this is a text file. A CGI program, on the other hand, is executed in real-time, so that it can output dynamic information. An example of the use of such a gateway is when a database is hooked up to the World Wide Web. In this case, a CGI program, which the web daemon will execute to transmit information to the database engine, receive results back and display them to the client, needs to be created.
Daemon: It is a program that is not invoked explicitly, but lies dormant, waiting for some condition to occur. It is a process that has detached itself from a parent process and that may either live indefinitely or be regenerated at intervals. Typically, the program waits in the background and runs when a request is made on the port that it is watching. It normally works out of sight of the user. On the Internet, it is most likely encountered when e-mail is not delivered to the recipient. The message originator receives then the original message plus a message from a "mailer daemon."
For secure communications, it is essential to identify specifically a source and a destination for any exchange. Authentication depends on the source: it is the responsibility of the source to include information in any message that assures that the origin is authentic, and it is the responsibility of the destination to perform the required functions to insure message integrity. However, message privacy, which is achieved by encryption, depends on destination. That is, encryption must be done in such a way that only the intended destination can perform the decryption. Finally, access control depends on both source and destination. That is, each destination may have a distinct access policy for each potential source.
The measures taken to control access in a data processing system fall into two categories: those associated with the user and those associated with the data.
The control of access by user is sometimes referred to as authentication. The most common technique for user access control on a server is the user log on procedure, which requires both a user identifier (ID) and a password. The system will allow a user to log on only if that user's ID is known to the system and if the user has entered the correct password associated by the system with that ID. This ID/password combination is a notoriously unreliable method of user access control. Users can forget their passwords, and they can accidentally or intentionally reveal their password. Hackers have become very skillful at guessing IDs for special users, such as system control and systems management personnel. Finally, the ID/password files are subject to unauthorised access or tampering.
The problem of user access control is compounded over a communication network. The log on dialogue must take place over the communication medium, and eavesdropping is a potential threat.
User access control in a distributed environment can be either centralised or decentralised. In a centralised approach, the network provides a log on service to determine who is allowed to use the network and to whom the user is allowed to connect.
Decentralised user access control treats the network as a collection of transparent communication links, and the usual log on procedure is carried out by the destination host. In this situation, the security concerns for transmitting passwords over the network are real.
In many networks, two levels of access control may be used. Individual hosts may be provided with a log on facility to protect host-specific resources and applications. In addition, the network as a whole may provide protection to restrict network access to authorised users. This two-level facility is desirable for the common case in which the network connects disparate hosts and simply provides a convenient means of terminal/host access. In a more uniform network of hosts, a centralised access policy can be enforced.
The following is a brief description of the data-oriented access control procedures, as they are presently known in the art.
Following a successful log on procedure in a data network, the user is normally granted access to one or to a set of hosts and applications. This is generally not sufficient for a system that includes sensitive data in its database. Through the procedure for user access control, the user can be identified to the system. Associated with each user, there can be a user profile that specifies permissible operations and file accesses. The operating system can then enforce rules based on the user profile. The database management system, however, must control access to specific records or even portions of records. For example, it may be permissible for anyone in administration to obtain a list of company personnel, but only selected individuals may have access to salary information. The issue is more than just one of level of detail. Whereas the operating system may grant a user permission to access a file or use an application, after which there are no further security checks, the database management system must make a decision on each individual access attempt. That decision will depend not only on the user's identity but also on the specific parts of the data being accessed and even on the information already divulged to the user.
Thus, there exist in the industry a need to provide an improved user authentication system particularly for use on a data network, permitting to establish a strict, yet user-friendly function to control access to network resources or data.